'use strict';

/**
 * 百度开放平台鉴权认证机制
 * @description 用于获取百度平台的AccessToken，以调用百度API，以下参数会集成在event变量中
 * @property {String} type = [font|face] 获取的token类型
 *   @value font 文字识别API
 *   @value face 人脸识别API
 */
exports.main = async (event, context) => {
	
	// 初始化最终结果
	var result = { code: 0, data: {}, msg: '初始化' };
	
	// 百度开放平台应用数据
	var baidu = {
		// 文字识别应用
		"font": {
			AppID: '24147320',
			APIKey: 'TqSD0PIxzAQt1MalopYLdGrY',
			SecretKey: 'AuwYXaBbovBKfbKh6wb01F2tBPN0ZKVw',
		},
		// 人脸识别应用
		"face": {
			AppID: '17669063',
			APIKey: 'YQ0ENmDZ5enGO2RFopu0pq1f',
			SecretKey: 'SP1UP3Obnx0s5tnPt8oe2vOmuOxEy6mG',
		},
	};
	
	// 请求地址
	var myurl = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+baidu[event.type].APIKey+'&client_secret='+baidu[event.type].SecretKey;
	
	// 百度接口请求：鉴权认证
	const res = await uniCloud.httpclient.request(myurl, {
		method: 'POST',
		dataType: 'json' , // 指定返回值为json格式，自动进行parse
		timeout: 10000, // 超时时间10s
	});
	
	// 请求成功
	if (res.status == 200 && res.data.access_token){
		// 服务器返回结果 赋值给 最终结果
		result.code = 1;
		result.data = { "access_token": res.data.access_token };
		result.msg = '请求成功';
	}
	// 代码问题
	else if (res.status == 200)
	{
		result.code = 400;
		result.msg = '百度开放平台：' + res.data.error_description;
	}
	// 服务器的问题
	else {
		result.code = res.status;
		result.msg = '服务器异常';
	}
	
	// 返回最终结果
	return result;
	
};
